﻿<ResourceDictionary
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >

    <ControlTemplate x:Key="ComboBoxToggleButton" TargetType="{x:Type ToggleButton}">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition Width="20" />
            </Grid.ColumnDefinitions>
            <Border x:Name="Border" Grid.ColumnSpan="2" Background="{DynamicResource MetroComboBoxBg}" BorderBrush="{DynamicResource MetroComboBoxBorder}" BorderThickness="1" />
            <Path x:Name="Arrow" Grid.Column="1" Fill="{DynamicResource MetroComboBoxArrow}" HorizontalAlignment="Center" VerticalAlignment="Center" Data="M 0 0 L 4 4 L 8 0 Z"/>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource MetroComboBoxBorderHover}"/>
                <Setter TargetName="Arrow" Property="Fill" Value="{DynamicResource MetroComboBoxArrowHover}"/>
            </Trigger>
            <Trigger Property="IsChecked" Value="true">
                <Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource MetroComboBoxBorderHover}"/>
                <Setter TargetName="Arrow" Property="Fill" Value="{DynamicResource MetroComboBoxArrowHover}"/>
                <Setter TargetName="Border" Property="Background" Value="{DynamicResource MetroComboBoxBgHover}"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

    <ControlTemplate x:Key="ComboBoxTextBox" TargetType="{x:Type TextBox}">
        <Border x:Name="PART_ContentHost" Focusable="False" Background="{TemplateBinding Background}" />
    </ControlTemplate>

    <Style x:Key="{x:Type ComboBox}" TargetType="{x:Type ComboBox}">
        <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
        <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
        <Setter Property="MinWidth" Value="120"/>
        <Setter Property="FontWeight" Value="SemiBold"/>
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ComboBox}">
                    <Grid x:Name="Combo">
                        <ToggleButton Name="ToggleButton" Template="{StaticResource ComboBoxToggleButton}" Grid.Column="2" Focusable="false"
                            IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}"
                            ClickMode="Press">
                        </ToggleButton>
                        <ContentPresenter
                            Name="ContentSite"
                            IsHitTestVisible="False" 
                            Content="{TemplateBinding SelectionBoxItem}"
                            ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                            ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                            Margin="4,3,24,4"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Left" />
                        <TextBox x:Name="PART_EditableTextBox"
                            Style="{x:Null}" 
                            Template="{DynamicResource ComboBoxTextBox}" 
                            HorizontalAlignment="Left" 
                            VerticalAlignment="Center" 
                            Margin="4,3,24,4"
                            Focusable="False" 
                            Background="Transparent"
                            Visibility="Hidden"
                            IsReadOnly="{TemplateBinding IsReadOnly}"/>
                        <Popup 
                            Name="Popup"
                            Placement="Bottom"
                            IsOpen="{TemplateBinding IsDropDownOpen}"
                            AllowsTransparency="True" 
                            Focusable="False"
			                VerticalOffset="-2"
                            PopupAnimation="Fade">
                            <Grid 
                              Name="DropDown"               
                              MinWidth="{TemplateBinding ActualWidth}"
                              MaxHeight="{TemplateBinding MaxDropDownHeight}">
                                <Border 
                                    x:Name="DropDownBorder"
				                    BorderBrush="{DynamicResource MetroComboBoxBorderHover}"
				                    BorderThickness="1,0,1,1"
				                    Background="{DynamicResource MetroComboBoxBgHover}"
                                    />
                                <ScrollViewer Margin="2">
                                    <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
                                </ScrollViewer>
                            </Grid>
                        </Popup>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="HasItems" Value="False">
                            <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95"/>
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter TargetName="Combo" Property="Opacity" Value="0.5" />
                        </Trigger>
                        <Trigger Property="IsGrouping" Value="True">
                            <Setter Property="ScrollViewer.CanContentScroll" Value="False"/>
                        </Trigger>
                        <Trigger Property="IsEditable" Value="True">
                            <Setter Property="IsTabStop" Value="False"/>
                            <Setter TargetName="PART_EditableTextBox" Property="Visibility"	Value="Visible"/>
                            <Setter TargetName="ContentSite" Property="Visibility" Value="Hidden"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                    <ControlTemplate.Resources>
                        <Style TargetType="{x:Type ComboBoxItem}">
                            <Setter Property="Focusable" Value="False" />
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type ComboBoxItem}">
                                        <Border x:Name="Border" Background="{DynamicResource MetroComboBoxBgHover}" Padding="2,4">
                                            <ContentPresenter RenderOptions.ClearTypeHint="Enabled" />
                                        </Border>
                                        <ControlTemplate.Triggers>
                                            <Trigger Property="IsHighlighted" Value="True">
                                                <Setter TargetName="Border" Property="Background" Value="{DynamicResource MetroComboBoxItemHighlighted}"/>
                                            </Trigger>
                                            <Trigger Property="IsEnabled" Value="False">
                                                <Setter TargetName="Border" Property="Opacity" Value="0.5"/>
                                            </Trigger>
                                        </ControlTemplate.Triggers>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ControlTemplate.Resources>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <ControlTemplate x:Key="ClearComboBoxToggleButton" TargetType="{x:Type ToggleButton}">
        
        <Grid Background="Transparent">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition Width="20" />
            </Grid.ColumnDefinitions>
            <ContentPresenter
                            Name="ContentSite"
                            Opacity="0.6"
                            IsHitTestVisible="False" 
                            Margin="0,0,2,0"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Left" />
            <Path x:Name="Arrow" Grid.Column="1" Fill="{DynamicResource MetroTextLight}"
                  HorizontalAlignment="Center" VerticalAlignment="Center" Data="M 0 0 L 4 4 L 8 0 Z"/>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Opacity" TargetName="ContentSite" Value="1"/>
              
            </Trigger>
            <Trigger Property="IsChecked" Value="true">
                 <Setter Property="Opacity" TargetName="ContentSite" Value="1"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
    
    <Style x:Key="ClearComboBox" TargetType="{x:Type ComboBox}">
        <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
        <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
        <Setter Property="MinWidth" Value="60"/>
        <Setter Property="FontSize" Value="{DynamicResource SmallTextSize}"/>
        <Setter Property="FontFamily" Value="{DynamicResource DefaultFont}"/>
        <Setter Property="FontWeight" Value="Bold"/>
        <Setter Property="Foreground" Value="{DynamicResource MetroTextLight}"/>
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ComboBox}">
                    <Grid x:Name="Combo">
                        <ToggleButton Name="ToggleButton" Template="{StaticResource ClearComboBoxToggleButton}" Grid.Column="2" Focusable="false"
                            
                            Content="{TemplateBinding SelectionBoxItem}"
                            ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                            ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                                      
                            IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}"
                            ClickMode="Press">
                        </ToggleButton>
                      
                        <Popup 
                            Name="Popup"
                            Placement="Bottom"
                            IsOpen="{TemplateBinding IsDropDownOpen}"
                            AllowsTransparency="True" 
                            Focusable="False"
			                VerticalOffset="-2"
                            PopupAnimation="Fade">
                            <Grid 
                              Name="DropDown"               
                              MinWidth="{TemplateBinding ActualWidth}"
                              MaxHeight="{TemplateBinding MaxDropDownHeight}">
                                <Border 
                                    x:Name="DropDownBorder"
				                    BorderBrush="{DynamicResource MetroComboBoxBorderHover}"
				                    BorderThickness="1,1,1,1"
				                    Background="{DynamicResource MetroComboBoxBgHover}"
                                    />
                                <ScrollViewer Margin="3">
                                    <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
                                </ScrollViewer>
                            </Grid>
                        </Popup>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="HasItems" Value="False">
                            <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95"/>
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter TargetName="Combo" Property="Opacity" Value="0.5" />
                        </Trigger>
                        <Trigger Property="IsGrouping" Value="True">
                            <Setter Property="ScrollViewer.CanContentScroll" Value="False"/>
                        </Trigger>
                     
                    </ControlTemplate.Triggers>
                    <ControlTemplate.Resources>
                        <Style TargetType="{x:Type ComboBoxItem}">
                            <Setter Property="Focusable" Value="False" />
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type ComboBoxItem}">
                                        <Border x:Name="Border" Background="{DynamicResource MetroComboBoxBgHover}" Padding="2,4">
                                            <ContentPresenter RenderOptions.ClearTypeHint="Enabled" />
                                        </Border>
                                        <ControlTemplate.Triggers>
                                            <Trigger Property="IsHighlighted" Value="True">
                                                <Setter TargetName="Border" Property="Background" Value="{DynamicResource MetroComboBoxItemHighlighted}"/>
                                            </Trigger>
                                            <Trigger Property="IsEnabled" Value="False">
                                                <Setter TargetName="Border" Property="Opacity" Value="0.5"/>
                                            </Trigger>
                                        </ControlTemplate.Triggers>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ControlTemplate.Resources>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</ResourceDictionary>